Skip to main content

Настройка кластера

Для примера рассмотрим схему, состоящую из 2-х серверов reports.server1 (основной) и reports.server1 (резервный).

Пример кластера из 2-х серверов

Пример кластера из 2-х серверов

Действия выполняемые на хосте reports.server1:

  • Открыть файл technodoc.settings.ini на хосте reports.server1.
  • В секции [Cluster] указать настройке Priority значение равное 1, что сделает данный сервер основным, так как это будет максимальный приоритет среди серверов в данной конфигурации (можно указать любое число, которое будет больше чем на резервном сервере).
  • В секции [Cluster] задать для настройки ServersAddresses:0 значение равное http://reports.server2. Данная настройка задает адрес второго сервера для его опроса и определения состояния сервера.
  • Для сервера в режиме резервного сервера есть 2 варианта поведения, которые настрагиваются с помощью опции RequestHandleType:
    • Forbid - все запросы на изменение данных к резервным серверам отклоняются
    • RedirectToPrimary - все отличные от GET запросы к резервным серверам перенаправляются на основной сервер Выберем для примера вариант по умолчанию Forbid.
  • В результате настройки в секции [Cluster] на хосте reports.server1 будут выглядеть следующим образом:
[Cluster]
Priority = 1 # Приоритет текущего сервера. Сервер с наивысшим приоритетом является основным
ServersAddresses:0 = http://reports.server2 # Адреса серверов в кластере в формате [http|https]://[IP|доменное имя]:[порт]
RequestHandleType = Forbid # Тип обработки запросов

При переходе сервера в режим резервного сервера необходимо отключить задачи, которые могут изменять данные для избегания конфликтов, для этого:

  • Открыть файл technodoc.settings.ini на хосте reports.server1.
  • Отключить задачи для режима резервного сервера: UploadReportValuesJob, ProcessReportsCreationRulesJob, ProcessReportsRulesJob, CalculateOperationTimeJob, SendMailsJob и DeleteMailsJob. Для этого необходимо добавить в конфигурацию для каждой задачи секцию конфигурирования с префиксом Standby и указать значение настройки IsEnabled равным False:
# Список допустимых названий задач:
[Standby:Reports:Jobs:UploadReportValuesJob] # Задача по загрузке значений отчетов
IsEnabled = False # Включена ли задача
[Standby:Reports:Jobs:ProcessReportsCreationRulesJob] # Задача по созданию отчетов
IsEnabled = False # Включена ли задача
[Standby:Reports:Jobs:ProcessReportsRulesJob] # Задача по обработке правил отчетов
IsEnabled = False # Включена ли задача
[Standby:OperationTime:Jobs:CalculateOperationTimeJob] # Задача по расчету наработки
IsEnabled = False # Включена ли задача
[Standby:Mail:Jobs:SendMailsJob] # Задача по отправке почты
IsEnabled = False # Включена ли задача
[Standby:Mail:Jobs:DeleteMailsJob] # Задача по удалению устаревших писем
IsEnabled = False # Включена ли задача

Действия выполняемые на хосте reports.server2:

  • Открыть файл technodoc.settings.ini на хосте reports.server2.
  • В секции [Cluster] указать настройке Priority значение равное 0, что сделает данный сервер резервным, так как это будет минимальный приоритет среди серверов в данной конфигурации (можно указать любое число, которое будет меньше чем на основном сервере).
  • В секции [Cluster] задать для настройки ServersAddresses:0 значение равное http://reports.server1. Данная настройка задает адрес второго сервера для его опроса и определения состояния сервера.
  • Для сервера в режиме резервного сервера есть 2 варианта поведения, которые настрагиваются с помощью опции RequestHandleType:
    • Forbid - все запросы на изменение данных к резервным серверам отклоняются
    • RedirectToPrimary - все отличные от GET запросы к резервным серверам перенаправляются на основной сервер Выберем для примера вариант по умолчанию Forbid.
  • В результате настройки в секции [Cluster] на хосте reports.server2 будут выглядеть следующим образом:
[Cluster]
Priority = 0 # Приоритет текущего сервера. Сервер с наивысшим приоритетом является основным
ServersAddresses:0 = http://reports.server1 # Адреса серверов в кластере в формате [http|https]://[IP|доменное имя]:[порт]
RequestHandleType = Forbid # Тип обработки запросов

Для режима резервного сервера необходимо отключить задачи, которые могут изменять данные для избегания конфликтов, для этого:

  • Открыть файл technodoc.settings.ini на хосте reports.server2.
  • Отключить задачи для режима резервного сервера: UploadReportValuesJob, ProcessReportsCreationRulesJob, ProcessReportsRulesJob, CalculateOperationTimeJob, SendMailsJob и DeleteMailsJob. Для этого необходимо добавить для каждой задачи секции конфигурирования с префиксом Standby и указать значение настройки IsEnabled равным False:
# Список допустимых названий задач:
[Standby:Reports:Jobs:UploadReportValuesJob] # Задача по загрузке значений отчетов
IsEnabled = False # Включена ли задача
[Standby:Reports:Jobs:ProcessReportsCreationRulesJob] # Задача по созданию отчетов
IsEnabled = False # Включена ли задача
[Standby:Reports:Jobs:ProcessReportsRulesJob] # Задача по обработке правил отчетов
IsEnabled = False # Включена ли задача
[Standby:OperationTime:Jobs:CalculateOperationTimeJob] # Задача по расчету наработки
IsEnabled = False # Включена ли задача
[Standby:Mail:Jobs:SendMailsJob] # Задача по отправке почты
IsEnabled = False # Включена ли задача
[Standby:Mail:Jobs:DeleteMailsJob] # Задача по удалению устаревших писем
IsEnabled = False # Включена ли задача

После всех манипуляций необходимо перезагрузить ТехноДок.